# WSL · Ubuntu · Docker 이해하기 (초보자용 가이드)

## 문서 정보

| 항목   | 내용                         |
| ---- | -------------------------- |
| 문서명  | WSL · Ubuntu · Docker 이해하기 |
| 대상   | 개발 입문자, 신규 팀원              |
| 작성목적 | Baron SSO 개발환경 이해          |
| 작성일  | 2026-06-12                 |

---

# 1. 개요

현재 Baron SSO 개발환경은 다음과 같은 구조로 구성되어 있습니다.

```text
Windows
   ↓
WSL
   ↓
Ubuntu
   ↓
Docker
   ↓
Baron 서비스들
```

처음 접하는 사람은 용어가 많아 어렵게 느껴질 수 있지만,

사실은 다음과 같이 이해하면 쉽습니다.

| 구성요소           | 비유         |
| -------------- | ---------- |
| Windows        | 집          |
| WSL            | 집 안의 리눅스 방 |
| Ubuntu         | 방에 사는 사람   |
| Docker         | 작업실        |
| Container      | 개별 작업실     |
| Baron Backend  | 백엔드 작업실    |
| Baron Frontend | 프론트엔드 작업실  |
| ClickHouse     | 데이터 저장 작업실 |

---

# 2. 전체 구조 이해하기

## 실제 개발환경 구조

```text
┌─────────────────────────┐
│      Windows 11         │
│                         │
│  VS Code                │
│  Chrome                 │
│  Git                    │
└──────────┬──────────────┘
           │
           ▼
┌─────────────────────────┐
│         WSL             │
│ (Windows Linux Layer)   │
└──────────┬──────────────┘
           │
           ▼
┌─────────────────────────┐
│        Ubuntu           │
│       (Linux)           │
└──────────┬──────────────┘
           │
           ▼
┌─────────────────────────┐
│        Docker           │
└──────────┬──────────────┘
           │
           ▼
 ┌─────────┼─────────┬─────────┐
 ▼         ▼         ▼         ▼
Backend  UserFront AdminFront ClickHouse
```

---

# 3. Windows란?

현재 우리가 사용하는 기본 운영체제(OS)입니다.

예)

```text
C:\Users
D:\Project
E:\Workspace
```

Windows 환경에서 사용하는 경로입니다.

주요 프로그램

* VS Code
* Chrome
* Edge
* Explorer
* Git GUI

등이 Windows 위에서 실행됩니다.

---

# 4. WSL이란?

## WSL

Windows Subsystem for Linux

즉,

"Windows 안에서 Linux를 실행할 수 있게 해주는 기능"

입니다.

---

## WSL이 없던 시절

Linux를 사용하려면

```text
PC
 ├─ Windows
 └─ Virtual Machine
      └─ Ubuntu
```

구조를 사용했습니다.

문제점

* 느림
* 무거움
* 메모리 많이 사용

---

## WSL 사용

```text
PC
 ├─ Windows
 └─ WSL
      └─ Ubuntu
```

장점

* 빠름
* 가벼움
* 실제 Linux와 거의 동일

---

# 5. Ubuntu란?

Ubuntu는 Linux 운영체제입니다.

Windows와 같은 OS입니다.

비교하면

| Windows    | Linux    |
| ---------- | -------- |
| Windows 11 | Ubuntu   |
| 탐색기        | Shell    |
| CMD        | Terminal |
| PowerShell | Bash     |

---

Ubuntu 접속 예시

```bash
wsl
```

또는

```bash
ubuntu
```

실행 후

```bash
ubuntu@DESKTOP-XXXX:~$
```

가 보이면 Ubuntu 안에 들어온 상태입니다.

---

# 6. Docker란?

Docker는

"프로그램을 독립적으로 실행하는 기술"

입니다.

---

예를 들어

Baron 프로젝트에 필요한 것

```text
NodeJS
Database
Backend
Frontend
ClickHouse
```

를 직접 설치하면

PC가 복잡해집니다.

---

Docker 사용 시

```text
┌────────────┐
│ Backend    │
└────────────┘

┌────────────┐
│ Frontend   │
└────────────┘

┌────────────┐
│ Database   │
└────────────┘

┌────────────┐
│ ClickHouse │
└────────────┘
```

각각 독립적으로 실행됩니다.

---

# 7. Container란?

Docker 안에서 실행되는 작은 서버입니다.

쉽게 말하면

"미니 컴퓨터"

라고 생각하면 됩니다.

---

현재 Baron 환경 예시

```text
Container 1
baron_backend

Container 2
baron_userfront

Container 3
baron_adminfront

Container 4
baron_clickhouse
```

각 컨테이너는

* 독립 실행
* 독립 설정
* 독립 포트

를 가집니다.

---

# 8. Image와 Container 차이

많이 헷갈리는 부분입니다.

## Image

설치 파일

예)

```text
Windows 설치 ISO
```

와 비슷

---

## Container

실행 중인 프로그램

예)

```text
설치 완료 후 실행된 Windows
```

와 비슷

---

관계

```text
Docker Image
      ↓
실행
      ↓
Container
```

---

# 9. 실제 Baron 프로젝트 구조

현재 개발환경

```text
Windows
│
├─ VS Code
│
├─ Git
│
└─ E:\h_workspace\baron-sso
```

---

WSL에서 보면

```text
/mnt/e/h_workspace/baron-sso
```

가 됩니다.

---

같은 폴더를

Windows와 Ubuntu가

다르게 표현하는 것입니다.

| Windows                  | Ubuntu                       |
| ------------------------ | ---------------------------- |
| E:\h_workspace\baron-sso | /mnt/e/h_workspace/baron-sso |

---

# 10. VS Code는 어디서 실행되는가?

VS Code 자체는 Windows에서 실행됩니다.

```text
Windows
 └─ VS Code
```

하지만

Remote WSL 기능을 사용하면

```text
VS Code
   ↓
WSL
   ↓
Ubuntu
```

에 연결됩니다.

---

좌측 하단에

```text
WSL: Ubuntu
```

가 보이면

Ubuntu 내부를 편집 중인 상태입니다.

---

# 11. Docker Compose란?

여러 컨테이너를 한 번에 실행하는 기능입니다.

예)

docker-compose.yml

```yaml
services:

  backend:
    ...

  userfront:
    ...

  adminfront:
    ...

  clickhouse:
    ...
```

---

실행

```bash
docker compose up -d
```

---

Docker가 자동으로

```text
Backend 시작
UserFront 시작
AdminFront 시작
ClickHouse 시작
```

을 수행합니다.

---

# 12. Baron SSO 실행 흐름

```text
개발자
   │
   ▼

VS Code 수정

   │
   ▼

Git 저장

   │
   ▼

Docker Compose 실행

   │
   ▼

Backend Container

UserFront Container

AdminFront Container

ClickHouse Container

   │
   ▼

웹 브라우저 접속
```

---

# 13. 자주 사용하는 명령어

## 현재 컨테이너 보기

```bash
docker ps
```

---

## 전체 컨테이너 보기

```bash
docker ps -a
```

---

## 로그 보기

```bash
docker logs 컨테이너명
```

예)

```bash
docker logs baron_backend
```

---

## 컨테이너 접속

```bash
docker exec -it 컨테이너명 bash
```

예)

```bash
docker exec -it baron_backend bash
```

---

## 컨테이너 중지

```bash
docker stop 컨테이너명
```

---

## 컨테이너 재시작

```bash
docker restart 컨테이너명
```

---

# 14. 최종 정리

## 한 문장 설명

### Windows

사용자가 사용하는 실제 운영체제

---

### WSL

Windows 안에서 Linux를 사용할 수 있게 해주는 기능

---

### Ubuntu

WSL 안에서 실행되는 Linux 운영체제

---

### Docker

프로그램을 독립된 환경에서 실행하는 기술

---

### Container

Docker 안에서 실행되는 개별 서비스

---

## Baron SSO 전체 구조

```text
사용자
   │
   ▼

Windows

   │

VS Code

   │

WSL

   │

Ubuntu

   │

Docker

   │

├─ baron_backend
├─ baron_userfront
├─ baron_adminfront
└─ baron_clickhouse

   │

브라우저 접속
```

---

## 기억해야 할 핵심

"Windows 위에서 WSL이 동작하고,

WSL 안에서 Ubuntu가 실행되며,

Ubuntu 안에서 Docker가 실행되고,

Docker 안에서 Baron 서비스들이 실행된다."
